/*
 * @Author: 林九
 * @Date: 2022-11-27 18:59:38
 * @LastEditors: 林九 && 3627719754@qq.com
 * @LastEditTime: 2022-11-29 14:38:46
 * @FilePath: \music\src\main.rs
 * @Description: 入口文件
 * 需要定制 web(网站) ios(苹果软件) android(安卓软件) 各种小程序 以及 后端 请联系 3627719754
 * Copyright (c) 2022 by 林九, All Rights Reserved. 
 */

//* 由于录屏影响性能 所以效果不是很好 见谅
//* 郑重声明本项目完全使用 Rust 编写，由 林九 独自完成，搬运请标注原作者！！！

use std::fs::File;
use std::io::BufReader;
use rodio::{self, Source};

fn main() {
    let (_stream, stream_handle) = rodio::OutputStream::try_default().unwrap();
    //* 音谱
    let musics: Vec<&str> = vec![
        "start", // 开始
        "7-", "1", "2", "3", "0", "5-", "5", "3", "0", "0", "0", "0", "0", "0", "0", "0",
        "7-", "1", "2", "3", "0", "5-", "5", "3", "2", "3", "1", "2", "7-", "1", "5-", "0",
        "7-", "1", "2", "3", "0", "5-", "5", "3", "0", "0", "0", "0", "0", "0", "0", "0",
        "7-", "1", "2", "3", "0", "5-", "5", "3", "2", "3", "1", "2", "7-", "1", "5-", "0",
        "7", "1+", "2+", "3+", "0", "5", "5+", "3+", "0", "0", "0", "0", "0", "0", "0", "0",
        "7", "1+", "2+", "3+", "0", "5", "5+", "3+", "2+", "3+", "1+", "2+", "7", "1+", "5", "0",
        "7", "1+", "2+", "3+", "0", "5", "5+", "3+", "0", "0", "0", "0", "0", "0", "0", "0",
        "2", "0", "0", "0", "0", "0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0",
        "2", "0", "0", "1", "2", "0", "0", "1", "2", "0", "3", "0", "5", "0", "3", "0",
        "2", "0", "0", "1", "2", "0", "0", "1", "2", "3", "2", "1", "6-", "0", "0", "0",
        "2", "0", "0", "1", "2", "0", "0", "1", "2", "0", "3", "0", "5", "0", "3", "0",
        "2", "0", "0", "3", "2", "0", "1", "2", "2", "0", "0", "0", "0", "0", "0", "0",
        "2", "0", "0", "1", "2", "0", "0", "1", "2", "0", "3", "0", "5", "0", "3", "0",
        "2", "0", "0", "3", "2", "0", "1", "0", "6-", "0", "0", "0",
        "3", "2", "1", "2", "1", "0", "0", "0",
        "3", "2", "1", "2", "1", "0", "0",
        "5-", "3", "2", "1", "2", "0", "0", "1", "0", "0", "0", "0", "0",
        "1", "0", "2", "0", "3", "0", "1", "0", "6", "0", "5", "6", "0", "0", "0",
        "2", "7", "0", "6", "7", "0", "0", "0", "0",
        "7", "0", "6", "7", "0", "0", "3", "0", "1+", "2+", "1+", "7", "6", "0", "0",
        "5", "6", "0", "5", "6", "0", "5", "6", "5", "6", "0", "5", "1", "0", "5", "0", "3", "3", "0", "0", "0", "0", "0", "0", "0",
        "1", "0", "2", "0", "3", "0", "1", "0", "6", "0", "5", "6", "0", "0", "0",
        "2", "7", "0", "6", "7", "0", "0", "0", "0",
        "7", "0", "6", "7", "0", "0", "3", "0", "1+", "2+", "1+", "7", "6", "0", "0",
        "5", "6", "0", "3+", "3+", "0", "0", "5", "0", "6", "0", "3+", "3+", "0",
        "5", "0", "6", "6", "0", "3-", "0", "3-", "0", "3-", "0", "3-", "0", "0", "0",
        "1+", "0", "2+", "0", "3+", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "2+", "0", "0",
        "3+", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "3+", "0", "0",
        "2+", "0", "1+", "6", "0", "1+", "0", "1+", "2+", "0", "1+", "6", "0", "0", "1+", "0", "3+", "0", "0", "0", "0", "0", "3+", "0", "2+", "0", "0", "0",
        "1+", "0", "2+", "0", "3+", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "0",
        "2+", "0", "3+", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "0",
        "3+", "0", "2+", "0", "1+", "6", "0", "0", "3+", "0", "2+", "0", "1+",
        "6", "0", "1+", "0", "0", "1+", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
        "6", "3+", "0", "0", "2+", "0", "1+", "6", "0", "3+", "0", "0", "2+", "0", "1+",
        "6", "0", "1+", "0", "0", "1+", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
        "7", "1+", "2+", "3+", "0", "5", "5+", "3+", "2+", "3+", "7", "1+", "6", "7", "5", "0",
        "7", "1+", "2+", "3+", "0", "5", "5+", "3+", "0", "0", "0", "0", "0", "0", "0", "0",
        "6+", "3+", "2+", "6", "3", "6", "2+", "3+", "6+", "0", "0", "0", "0", "0", "0", "0",
        "2", "0", "0", "1", "2", "0", "0", "1", "2", "0", "3", "0", "5", "0", "3", "0",
        "2", "0", "0", "1", "2", "0", "0", "1", "2", "3", "2", "1", "5-", "0", "0", "0",
        "2", "0", "0", "1", "2", "0", "0", "1", "2", "0", "3", "0", "5", "0", "3", "0",
        "2", "0", "0", "3", "2", "0", "1", "0", "2", "0", "0", "0", "0", "0", "0", "0",
        "2", "0", "0", "1", "2", "0", "0", "1", "2", "0", "3", "0", "5", "0", "3", "0",
        "2", "0", "0", "3", "2", "0", "1", "0", "6-", "0", "0", "0", "3", "2", "1", "2",
        "1", "0", "0", "0", "3", "2", "1", "2", "1", "0", "0", "5-", "3", "2", "1", "2",
        "1", "0", "0", "0", "0", "0", "0", "0", "1", "0", "2", "0", "3", "0", "1", "0",
        "6", "0", "5", "6", "0", "0", "0", "1", "7", "0", "6", "7", "0", "0", "0", "0",
        "7", "0", "6", "7", "0", "0", "3", "0", "1+", "2+", "1+", "7", "6", "0", "5", "0",
        "6", "0", "5", "6", "0", "5", "6", "5", "6", "0", "5", "2", "0", "5", "0", "0",
        "3", "0", "0", "0", "0", "0", "0", "0", "1", "0", "2", "0", "3", "0", "1", "0",
        "6", "0", "5", "6", "0", "0", "0", "1", "7", "0", "6", "7", "0", "0", "0", "0",
        "7", "0", "6", "7", "0", "0", "3", "0", "1+", "2+", "1+", "7", "6", "0", "5", "0",
        "6", "0", "3+", "3+", "0", "0", "5", "0", "6", "0", "3+", "3+", "0", "5", "0", "6",
        "6", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "1+", "0", "2+", "0",
        "3+", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "0", "2+", "3+",
        "0", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "3+", "0", "0",
        "2+", "0", "1+", "6", "0", "1+", "0", "0", "2+", "0", "1+", "6", "0", "1+", "0", "0",
        "3+", "0", "0", "0", "0", "4+", "3+", "0", "3+", "2+", "0", "0", "1+", "0", "2+", "0",
        "3+", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "0", "2+", "0",
        "3+", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "0", "6+", "5+", "0", "3+", "0", "0",
        "2+", "0", "1+", "6", "0", "3+", "0", "0", "2+", "0", "1+", "6", "0", "1+", "0", "0",
        "1+", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "6", "3+", "0", "0",
        "2+", "0", "0", "0", "1+", "0", "6", "0", "0", "0", "3+", "0", "0", "0", "0", "0",
        "2+", "0", "0", "0", "1+", "0", "6", "0", "0", "0", "1+", "0", "0", "0", "0", "0",
        "1+", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
        "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
        "end"
    ];
    for i in 0..musics.len() {
        if musics[i] == "start" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/test.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(1000));
            continue;
        }else if musics[i] == "1" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/m1.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "2" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/m2.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "3" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/m3.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "5" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/m5.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "6" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/m6.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "7" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/m7.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "0" {
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "1-" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/l1.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "2-" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/l2.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "3-" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/l3.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "4-" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/l4.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "5-" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/l5.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "6-" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/l6.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "7-" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/l7.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "1--" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/ll1.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "2--" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/ll2.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "3--" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/ll3.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "4--" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/ll4.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "5--" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/ll5.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "6--" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/ll6.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "7--" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/ll7.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "1+" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/h1.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "2+" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/h2.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "3+" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/h3.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "4+" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/h4.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "5+" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/h5.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "6+" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/h6.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "7+" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/h7.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "1++" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/hh1.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "2++" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/hh2.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "3++" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/hh3.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "4++" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/hh4.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "5++" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/hh5.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "6++" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/hh6.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "7++" {
            stream_handle.play_raw(rodio::Decoder::new(BufReader::new(File::open("sound/hh7.mp3").unwrap())).unwrap().convert_samples()).ok();
            std::thread::sleep(std::time::Duration::from_millis(180));
            continue;
        }else if musics[i] == "end" {
            std::process::exit(1);
        }
    }
    loop {}
}